Field
The disclosed embodiments relate to profiling a software process. More particularly, a system, apparatus, and methods are provided for profiling a software application that executes on one or a plurality of machines.
Related Art
To monitor the performance of a software process that is executing on a computer, the process and/or the underlying computing environment may be profiled. For example, if a developer notices that a software application is taking an overly large amount of resources on a machine, the developer may invoke one or more profiling/metric gathering tools on the software application to collect various metrics (e.g., memory usage, function calls) over a period of time, which may provide the developer insight into one or more characteristics of the application's execution.
In other cases, the execution of a software application on one or more production servers may be continually monitored for performance anomalies to minimize downtime and maintain quality of service. In this use case, technological limitations (e.g., network bandwidth limitations) and security requirements (e.g., enforced system privileges) may preclude remote collection of profiling data and other metrics from the production servers. Thus, one or more metric/profile-gathering tools may be locally installed on the production servers. However, because profiling tools may be expensive to run continuously, developers may be compelled to manually control the profiling tools so that metrics are gathered only at specific times for a subset of the production servers, which may result in (1) lost developer time and (2) less comprehensive profiling of the software application.
Hence, what is needed is a system that enables one to control metric/profile-gathering tools across one or more machines without the above-described problems.
In the figures, like reference numerals refer to the same figure elements.